﻿Public Class Ingrediens
    Public Property id As ULong
    Public Property navn As String
    Public Property innkjopspris As Single
    Public Property utsalgspris As Single
    Public Property mengde As ULong         'vi har forenklet mengde og brukt antall_enheter i databasen


    Public Sub New() ' defaul konstruktør
    End Sub

    Public Sub sjekkMengde(ByVal grense As ULong)
        If mengde <= grense Then
            MessageBox.Show("Varelageret inneholder kun " & mengde & " enheter " & navn & ". Du må bestille mer!")
        End If
    End Sub

    Public Sub New(ByVal innlestId As ULong)
        id = innlestId
    End Sub

    Public Sub New(ByVal innlestId As ULong, ByVal innlestNavn As String, ByVal innlestInnPris As Single, ByVal innlestUtPris As Single, ByVal innlestMengde As ULong)
        id = innlestId
        navn = innlestNavn
        innkjopspris = innlestInnPris
        utsalgspris = innlestUtPris
        mengde = innlestMengde
    End Sub

    Public Sub Lagre(Optional ByVal nyInnPris As UInteger = 0, Optional ByVal nyUtPris As UInteger = 0)
        If nyInnPris = 0 Or nyUtPris = 0 Then
            'i følge klassediagrammet skulle vi opprette et nytt objekt her, 
            'men det passer ikke inn her. Må i tilfelle være en Shared funksjon...
        End If
        Dim søkestreng As String = "UPDATE ingrediens SET ingrediensInnkjopsPrisPrEnhet = " & nyInnPris & ",ingrediensUtsalgsPrisPrEnhet = " & nyUtPris & " WHERE ingrediensNavn = " & "'" & navn & "'"
        Dim dt As New DataTable
        dt = Database.Query(søkestreng)

    End Sub

    Public Function EndreBeholdning(ByVal endring As Integer) As Integer
        Dim nyBeholdning As UInteger = mengde + endring 'negativ endring fører til reduksjon av beholdning
        Try
            Dim søkestreng As String = "UPDATE ingrediens SET ingrediensBeholdning = " & nyBeholdning & " WHERE ingrediensNavn = " & "'" & navn & "'"
            Dim dt As New DataTable
            dt = Database.Query(søkestreng)
        Catch ex As Exception
            MsgBox(ex.Message)
            endring = 0 ' Endringen ble ikke registrert
        End Try
        Return endring
    End Function



    Public Shared Sub AddIngrediens(ByVal iNavn, ByVal iInnPris, ByVal iUtPris, ByVal iBeholdning)

        Dim søkestreng As String = "INSERT INTO ingrediens (ingrediensNavn,ingrediensInnkjopsPrisPrEnhet ,ingrediensUtsalgsPrisPrEnhet , ingrediensBeholdning )  VALUES ('" & iNavn & "','" & iInnPris & "','" & iUtPris & "','" & iBeholdning & "')"
        Dim dt As New DataTable
        dt = Database.Query(søkestreng)

        ' burde returnere om det gikk greit eller ikke... eller vise resultatet

    End Sub


    Public Shared Function FinnByNavn(ByVal iNavn) As Ingrediens

        Dim ingrediensListe As New List(Of Ingrediens)
        ingrediensListe = Ingrediens.FinnAlle()
        Dim enIngrediens As New Ingrediens
        For Each i In ingrediensListe
            If i.navn = iNavn Then
                enIngrediens = i
            End If
        Next
        'returnerer ett bestemt ingrediens objekt
        Return enIngrediens

    End Function

    Public Shared Function FinnById(ByVal id) As Ingrediens

        Dim ingrediensListe As New List(Of Ingrediens)
        ingrediensListe = Ingrediens.FinnAlle()
        Dim enIngrediens As New Ingrediens
        For Each i In ingrediensListe
            If i.id = id Then
                enIngrediens = i
            End If
        Next
        'returnerer ett bestemt ingrediens objekt
        Return enIngrediens

    End Function

    Public Shared Function FinnAlle() As List(Of Ingrediens)

        Dim søkestreng As String = "SELECT * FROM ingrediens"
        Dim ingrediensTabell As New DataTable
        ingrediensTabell = Database.Query(søkestreng)
        Dim ingrediensListe As New List(Of Ingrediens)

        Dim row As DataRow
        For Each row In ingrediensTabell.Rows
            Dim enIngrediens As New Ingrediens
            enIngrediens.id = row("ingrediensId")
            enIngrediens.navn = row("ingrediensNavn")
            enIngrediens.innkjopspris = row("ingrediensInnkjopsPrisPrEnhet")
            enIngrediens.utsalgspris = row("ingrediensUtsalgsPrisPrEnhet")
            enIngrediens.mengde = row("ingrediensBeholdning")

            ingrediensListe.Add(enIngrediens)

        Next row
        'returnerer en liste med alle ingrediens objektene fra databasen
        Return ingrediensListe

    End Function

End Class
